package comportement;


import common.Constantes;
import java.io.Serializable;
import java.util.HashMap;
import plateau.Joueur;

public class PerdreNiveau implements IncidentFacheux, Serializable {

    protected int nombre;
    protected int malusRaceType = Constantes.UNDEFINED;
    protected int malusRaceNombre = 0;
    protected int malusClasseType = Constantes.UNDEFINED;
    protected int malusClasseNombre = 0;

    public PerdreNiveau(int nombre) {
        this.nombre = nombre;
    }
    
    public PerdreNiveau(int nombre, String catMalus, int malusType, int malusNombre ) {
        this.nombre = nombre;
        if( catMalus.equals( Constantes.C_CLASSE)) {
            this.malusClasseType = malusType;
            this.malusClasseNombre = malusNombre;
        }
        else if( catMalus.equals(Constantes.C_RACE) ) {
            this.malusRaceType = malusType;
            this.malusRaceNombre = malusNombre;
        }
    }
  
    public void provoquer(Joueur j) {
        int malus = 0;
        if( this.malusClasseType != Constantes.UNDEFINED ) {
            malus = (j.getInventaire().getClasse().contains(this.malusClasseType)) ? malusClasseNombre : 0 ;
        }
        else if( this.malusRaceType != Constantes.UNDEFINED ) {
            malus = (j.getInventaire().getRace().contains(this.malusRaceType)) ? malusRaceNombre : 0 ;
        }
        
        j.upNiveau(-1 * (nombre + malus), false);
    }
  
    public String getDescription() {
        String description;
        description = "Vous avez perdu " + nombre + " niveau" ;
        return description;
    }
}